/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controladores;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import modelos.ModeloOrden;
import modelos.ModeloProducto;
import vistas.VistaOrden;

/**
 *
 * @author usuario
 */
public class ControladorOrden implements ActionListener{

    private VistaOrden vista;
    private ModeloOrden modelo;
    private Vector <ModeloProducto> productos;

    public ControladorOrden(VistaOrden aThis) {
        vista=aThis;
        modelo= new ModeloOrden();
        productos= new ModeloProducto().listar();
        buscarDescripciones();

    }

    public void buscarDescripciones(){
        Vector<String> descripciones = new Vector<String>();
        for (int i = 0; i < productos.size(); i++)
            descripciones.add(productos.elementAt(i).getDescripcion());
        vista.cargarComboProductos(descripciones);
    }

     public ModeloProducto buscarProducto(String descrpicion){
        for (int i = 0; i < productos.size(); i++)
            if(productos.elementAt(i).getDescripcion().equals(descrpicion))
                return productos.elementAt(i);
        return null;
    }

    public void actionPerformed(ActionEvent ae) {
        if(ae.getActionCommand().equals("Registrar")){
            if(vista.validarVacios())
                if(vista.validarNumeros())
                    if(vista.validarFecha()){
                        modelo.setCedula_cliente(vista.getTxtCedula().getText());
                        modelo.setFecha(vista.getDtdFecha().getDate());
                        modelo.setId(Integer.parseInt(vista.getTxtCodigo().getText()));
                        modelo.setStatus("A");
                        modelo.setNombre_cliente(vista.getTxtNombre().getText());
                        modelo.setTotal(Float.parseFloat(vista.getTxtTotal().getText()));
                        if(modelo.registar()){
                            Vector<String> v = new Vector<String>();
                            Vector<String> vAux= vista.getInfoTabla();
                            for (int i = 0; i < vAux.size(); i++) {
                                String dato= vAux.elementAt(i);
                                v.add(""+buscarProducto(dato.substring(0, dato.indexOf("|"))).getId()+"|"+dato.substring(dato.indexOf("|")+1,dato.length()));
                            }
                            modelo.registarProductos(v);
                            Vector<String> k= vista.getInfoTabla();
                            for (int i = 0; i < k.size(); i++) {
                                String dato = k.elementAt(i);
                                ModeloProducto producto = buscarProducto(dato.substring(0,dato.indexOf("|")));
                                int n =Integer.parseInt(vista.getTxtCantidad().getText());
                                for (int j = 0; j < n; j++) {
                                    producto.actualizarStock();
                                }
                            }
                            JOptionPane.showMessageDialog(new JFrame(),"La orden se ha registrado exitosamente","Burguer",JOptionPane.INFORMATION_MESSAGE);
                            vista.cancelar();
                        }
                        else
                            JOptionPane.showMessageDialog(new JFrame(),"El codigo ya se encuentran registrados ","Burguer",JOptionPane.INFORMATION_MESSAGE);
                    }
                    else
                        JOptionPane.showMessageDialog(new JFrame(),"Fecha invalida","Burguer",JOptionPane.WARNING_MESSAGE);
                else
                    JOptionPane.showMessageDialog(new JFrame(),"Valores numericos no pemitidos","Burguer",JOptionPane.WARNING_MESSAGE);
            else
                JOptionPane.showMessageDialog(new JFrame(),"Existen campos vacios","Burguer",JOptionPane.WARNING_MESSAGE);

                
        }
            else if(ae.getActionCommand().equals("Consultar")){
                modelo.setId(Integer.parseInt(vista.getTxtCodigo().getText()));
                modelo.setStatus("A");
                if(modelo.consultar()){
                   vista.getTxtCedula().setText(modelo.getCedula_cliente());
                    vista.getTxtNombre().setText(""+modelo.getNombre_cliente());
                    vista.getTxtTotal().setText(""+modelo.getTotal());
                    vista.bloquear();
                    Vector<String> v = modelo.listarProductos();
                    for (int i = 0; i < v.size(); i++) {
                        String dato =v.elementAt(i);
                        vista.getTxtCantidad().setText(dato.substring(dato.lastIndexOf("|")+1,dato.length()));
                        ModeloProducto p = buscarProducto(dato.substring(0, dato.indexOf("|")));
                        vista.agregar(p.getDescripcion()+"|"+p.getPrecio(),false);
                    }
                    vista.getTxtCantidad().setText("");
                    vista.calcularTotal();
                }
                else{
                    JOptionPane.showMessageDialog(new JFrame(),"El codigo ingresado no pertenece a ningun ingrediente","Burguer",JOptionPane.WARNING_MESSAGE);
                }
            }
            else if(ae.getActionCommand().equals("Generar")){
                modelo.conectar();
                vista.getTxtCodigo().setText(""+(modelo.contarRegistros("Ingrediente")+1));
                vista.getTxtCodigo().setEditable(false);
                modelo.desconectar();
            }
            else if(ae.getActionCommand().equals("Salir")){
                vista.hide();
            }
            else if(ae.getActionCommand().equals("Eliminar")){
                modelo.setId(Integer.parseInt(vista.getTxtCodigo().getText()));
                modelo.setStatus("A");
                if(modelo.eliminar()){
                        JOptionPane.showMessageDialog(new JFrame(),"La orden ha sido eliminado exitosamente","Burguer",JOptionPane.INFORMATION_MESSAGE);
                        vista.cancelar();
                }
                else{
                    JOptionPane.showMessageDialog(new JFrame(),"El codigo ingresado no pertenece a ningun ingrediente","Burguer",JOptionPane.WARNING_MESSAGE);
                }
            }
            else if(ae.getActionCommand().equals("Mas")){
                String faltante = "";
                Vector<String> v= vista.getInfoTabla();
                ModeloProducto producto = buscarProducto(vista.getTextoCmbProducto());
                int n =Integer.parseInt(vista.getTxtCantidad().getText());
                for (int i = 0; i < n; i++) {
                    if(!producto.verificarStock(faltante)){
                            JOptionPane.showMessageDialog(new JFrame(),"No podemos atender su orden por que nos falta "+faltante,"Burguer",JOptionPane.WARNING_MESSAGE);
                            return;
                    }
                }
                vista.agregar(vista.getTextoCmbProducto()+"|"+buscarProducto(vista.getTextoCmbProducto()).getPrecio(),true);

            }
             else if(ae.getActionCommand().equals("Menos")){
                vista.eliminar();
            }
            else{
                vista.cancelar();
            }
    }

}
